<?php
/**
 * 测试接口文档的接口控制器
 * 
 * @title 测试接口文档
 * @entry http://discovery.segway.com
 *      指定该控制器的缺省入口
 * 
 * 
 * @actionRouterUriProtocolRule segment_slash
 *      指定该控制器 Action 的缺省入口 URI 的路由协议规则，取值为 query_string 或 segment_slash，默认为 segment_slash。
 *      该参数是在 @entry 的基础上添加 RouterParams，生成 Action 的 Router。
 * 
 * @actionParamsUriProtocolRule segment_slash
 *      指定该控制器 Action 的缺省参数 URI 的路由协议规则，取值为 query_string 或 segment_slash，默认为 segment_slash。
 *      该参数是在计算好的 ActionRouter 上添加 DemoParams，如果某个 Action 手动指定 @structUrl，则该值被忽略。
 * 
 * @command //pass
 * 
 * @author Jason 2016-01-07
 * @version 2.0.0
 */
class Demo extends MY_Manager_Controller
{
	public function __construct()
	{
		parent::__construct();
	}
	
    /**
     * 测试接口1, 这个接口暂时想隐藏
     * 
     * @param string $param1 第一个参数
     * @param string $param2 第二个参数
     * @param string $param3 第三个参数
     * 
     * @return json
     * 
     * @entry http://discovery.segway.com
     *          覆写入口参数, 优先级: 人工配置 > 方法文档注释 > 类文档注释
     * 
     * @structUrl <entry>/document/demo/actionTest1/demoParam1/demoParam2
     *  如果指定了structUrl, 则不必再指定demoParams
     * 
     * @actionParamsUriProtocolRule segment_slash
     * 
     * @demoParam param1 demoParam1
     * @demoParam param2 demoParam2
     * @demoParam //param3 defaultParam3
     *  如需组合structUrl时, 若某个demoParam没指定, 则取ReflectionParameter::getDefaultValue
     * 
     * @command pass noneurl
     */
    public function actionTest1($param1, $param2, $param3 = 'defaultParam3')
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    /**
     * 测试接口2, 手动指定structUrl
     * 
     * @param string $param1
     * @param string $param2
     * @param string $param3
     * 
     * @return json
     * 
     * @structUrl http://discovery.segway.com/document/demo/actionTest2/demoParam1/demoParam2
     *      手动指定structUrl, 不必再指定demoParams了
     * 
     * @demoParam none none
     */
    public function actionTest2($param1, $param2, $param3 = 'defaultParam3')
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    /**
     * 测试接口3, 从demoParams和函数定义中获取参数值, 组成structUrl
     *
     * @param string $param1
     * @param string $param2
     * @param string $param3
     * 
     * @return json
     * 
     * @demoParam param1 demoParam1
     * @demoParam param2 demoParam2
     * @demoParam //param3 defaultParam3
     */
    public function actionTest3($param1, $param2, $param3 = 'defaultParam3')
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    /**
     * 测试接口4, 从demoParams和函数定义中获取参数值, 组成structUrl，所有参数以 segment_slash 形式。
     *
     * @param string $param1
     * @param string $param2
     * @param string $param3
     * 
     * @return json
     * 
     * @actionParamsUriProtocolRule segment_slash
     * 
     * @demoParam param1 demoParam1
     * @demoParam param2 demoParam2
     * @demoParam //param3 defaultParam3
     */
    public function actionTest4($param1, $param2, $param3 = 'defaultParam3')
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    /**
     * 测试接口5, 从demoParams中获取参数值, 组成structUrl，路由参数以 segment_slash 形式，Action参数以 query_string 形式，CI Action 定义不接收参数啦。
     *
     * @param string $param1
     * @param string $param2
     * @param string $param3
     * 
     * @return json
     * 
     * @actionParamsUriProtocolRule query_string
     * 
     * @demoParam param1 demoParam1
     * @demoParam param2 demoParam2
     * @demoParam param3 demoParam3
     */
    public function actionTest5(/* $param1, $param2, $param3 */)
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    /**
     * 测试接口6, 从demoParams中获取参数值, 组成structUrl，所有参数以 query_string 形式。
     *
     * @param string $param1
     * @param string $param2
     * @param string $param3
     *
     * @return json
     *
     * @actionRouterUriProtocolRule query_string
     *
     * @actionParamsUriProtocolRule query_string
     *
     * @demoParam param1 demoParam1
     * @demoParam param2 demoParam2
     * @demoParam param3 demoParam3
     */
    public function actionTest6(/* $param1, $param2, $param3 */)
    {
    	var_dump(__CLASS__ . "::" . __FUNCTION__);
    	print_r($_REQUEST);
    }
    
    /**
     * 测试接口7, 可以组成structUrl, 但不显示链接
     *
     * @param string $param1
     * @param string $param2
     * @param string $param3
     *
     * @return json
     *
     * @structUrl <entry>/s/c/a/params
     * 
     * @command noneurl
     */
    public function actionTest7($param1, $param2, $param3 = 'defaultParam3')
    {
        var_dump(__CLASS__ . "::" . __FUNCTION__);
        print_r($_REQUEST);
    }
    
    
}
